/* $Id: editzone.js 2607 2006-11-10 09:02:42Z weberliu $ */

var editZone = new Object();

editZone.orgObject  = null;
editZone.orgChild   = null;
editZone.orgContent = null;
editZone.handler    = null;
editZone.recordId   = null;
editZone.enabled    = true;

editZone.filename = location.href.substring((location.href.lastIndexOf("/")) + 1, location.href.lastIndexOf("?")) + "?act=ajax";

/**
 * 编辑选定区域中的内容
 * 
 * @param: obj      触发点击事件的元素
 * @param: handler  处理编辑时间的函数名称
 * @param: id       被编辑的记录的ID号
 *
 * @return null
 */
editZone.edit = function(obj, handler, id, size) 
{
    if (!editZone.enabled)
    {
      return;
    }

    listZone.hideLoader();

    /* 记录编辑的对象，对象中的子元素以及编辑的原始内容 */
    var tag = obj.firstChild.tagName;

    if (typeof(tag) != "undefined") 
    {
        if (tag.toLowerCase() == "input") return; 
        editZone.orgChild = obj.firstChild;
    }
    else 
    {
        editZone.orgChild = null;
    }

    editZone.orgObject  = obj;
    editZone.handler    = handler;
    editZone.recordId   = id;
    editZone.orgContent = document.all ? obj.innerText : obj.textContent;

    /* 创建一个输入框 */
    var txt = document.createElement("INPUT");
    txt.value = editZone.orgContent;
    txt.style.width = (editZone.orgObject.offsetWidth + 12) + "px" ;
    txt.onblur = editZone.submit_edit;
    txt.onkeypress = editZone.keypress;

    /* 隐藏对象中的内容，并将输入框加入到对象中 */
    obj.innerHTML = "";
    obj.appendChild(txt);
    txt.focus();
}

/**
 * 还原编辑的单元格
 * 
 * @param: e  事件句柄
 *
 * @return null
 */
editZone.recover = function(e)
{
    var src = Utils.srcElement(e);
    editZone.setContent(editZone.orgContent);
}

/**
 * 提交编辑的内容
 */
editZone.submit_edit = function(e)
{
    editZone.enabled = false;
    var src = Utils.srcElement(e);

    listZone.showLoader();
    cp.set_response_type('object');
    cp.call(editZone.filename, editZone.handler, editZone.response, editZone.recordId, src.value);
}

/**
 * 在文本框中按下按键的事件处理函数
 * 当按下Enter的时候提交修改内容
 * 
 * @param: e  事件句柄
 *
 * @return null
 */
editZone.keypress = function(e)
{
    var evt = Utils.fixEvent(e);
    var obj = Utils.srcElement(e);

    if (evt.keyCode == 13) 
    {
        editZone.submit_edit(e);

        return false;
    }

    if (evt.keyCode == 27)
    {
        editZone.recover(e);
    }
}


/**
 * 处理返回的数据
 * 
 * @param: result       返回的对象类型的数据
 * @param: text_result  返回的文本类型的数据
 *
 * @return 
 */
editZone.response = function(result, text_result)
{
    listZone.hideLoader();
    editZone.enabled = true;

    var reval = result.ajaxResponse[0].newvalue[0].data;
    if (typeof reval == "string")
    {
        reval = reval.replace("''", "'");
    }

    /* 解析返回的数据 */
    if (result.ajaxResponse[0].success[0].data == "TRUE") 
    {
        // 操作成功了
        editZone.setContent(reval);
    }
    else
    {
        // 操作失败了
        editZone.setContent(editZone.orgContent);
    }

    /* 如果返回了消息 */
    if (result.ajaxResponse[0].message[0].data.length > 0) 
    {
        alert(result.ajaxResponse[0].message[0].data);
    }

    //alert(text_result);
}

/**
 * 设置原始对象的内容
 * 
 * @param: str  内容
 *
 * @return null
 */
editZone.setContent = function(str)
{
    editZone.orgObject.innerHTML = "";

    if (editZone.orgChild != null) {
        editZone.orgChild.innerHTML = str;
        editZone.orgObject.appendChild(editZone.orgChild);
    } else {
        editZone.orgObject.innerHTML = str;
    }
}

